package Exer5;

import java.io.Serializable;

/*
 *  现有一个Triangle（三角形）类
 *  服务器用于接收客户端传来的Triangle对象，计算三角形面积，将计算结果传给客户端。
 *  基本要求：使用Socket类和ServerSocket类实现单线程对象的发送与接收。
 *  实现计算结果的发送与接收。可以不使用界面。
 *  选做内容：
	实现多线程服务器和多线程客户端：
	服务器可以同时连接若干客户端；
	每个客户端接收字符串和发送Triangle对象是两个独立的线程。
 */

/**
 * 三角形类
 * @date 2019年11月20日 17:47:10
 */
public class Triangle implements Serializable{
	
	double sideA, sideB, sideC;
	String area;
	
	public Triangle(double a, double b, double c) {
		/**
		 * 构造函数
		 * @param a, b, c 三角形三边
		 * @date 2019年11月20日 17:47:59
		 */
		this.sideA = a;
		this.sideB = b;
		this.sideC = c;
	}
	
	public boolean isLeagal() {
		/**
		 * 判断三角形三边是否合法
		 * @return 判断结果
		 * @date 2019年11月20日 17:48:21
		 */
		
		// 任意两边之和大于第三边，任意两边之差小于第三边
		boolean condition_1 = (sideA + sideB > sideC) && (sideA - sideB < sideC);
		boolean condition_2 = (sideA + sideC > sideB) && (sideA - sideC < sideB);
		boolean condition_3 = (sideB + sideC > sideA) && (sideB - sideC < sideA);
		return (condition_1 && condition_2 && condition_3);
	}
	
	public String caculateArea() {
		/**
		 * 海伦公式计算三角形面积
		 * @return String类型的三角形面积表示
		 * @date 2019年11月20日 17:48:21
		 */
		
		double p = (sideA + sideB + sideC) / 2.0;
		area = "" + Math.sqrt(p * (p - sideA) * (p - sideB) 
				* (p - sideC));
		return area;
	}
	
}